﻿/////////////////////////////////////////////////////////////////////////////////
///              ESCUELA SUPERIOR POLITECNICA DE CHIMBORAZO                   ///
///                        PROYECTO INTEGRADOR IV                             /// 
///                         PROYECTO SICOPS 2011                              /// 
/// ------------------------------------------------------------------------- ///  
///              **********GRUPO DE DESARROLLADORES**********                 ///
///                    ************PEGASO*************                        /// 
///---------------------------------------------------------------------------///
///                                                         RIOBAMBA-ECUADOR  ///
///---------------------------------------------------------------------------///
///Marco Pineda Registro de proveedor ****************************************///
///---------------------------------------------------------------------------///
///                        FORMULARIO PROVEEDOR                               ///
/////////////////////////////////////////////////////////////////////////////////





using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using LogisticaDeAcceso;
//Formulario para el ingreso de nuevos proveedores
namespace Aplicacion.Formularios
{
    public partial class frmProveedor : Form
    {
        private bool varBandera = true;
        private string varConexion;//Variable con la direccion de coneccion, el nombre del base de datos y la cuenta de acceso
        private Negocios.ComponeteNegocios auxCom = new Negocios.ComponeteNegocios();
        public frmProveedor()
        {
            InitializeComponent();
        }


        public frmProveedor(string Con)
        {
            InitializeComponent();
            varConexion = Con;
        }
        private void frmProveedor_Load(object sender, EventArgs e)
        {
            metActualizarDatosPro();
            metGenerarClave();
        }
        //Llamdo a los metodos de ingreso de nuevos datos.
        private void btnGuardarPr_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("¿Desea continuar con el registro del proveedor actual?", "Atencion", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                metIngresoProveedor();
                btnNuevoPr.Enabled = true;
                btnGuardarPr.Enabled = false;
                grpProveedorPR.Enabled = false;
            }
        }
        //Actualizacion de los datos luego de llamar al modificados de datos de los Proveedores
        private void metActualizarDatosPro()
        {
            auxCom.metActualizarDatosPro(varConexion,this.coleccionDeDatos1);
        }
        //Metodo de conexion con los proveedores
        private void metIngresoProveedor()
        {
            auxCom.metIngresoNuevoProveedor(varConexion,txtCodigoPr.Text, txtNombrePr.Text, txtResponsablePr.Text, txtObserResPr.Text, txtCedulaPr.Text, txtDireccionPr.Text, txtTelefonoPr.Text, cmbCiudadPr.Text, cmbPaisPr.Text);
            metActualizarDatosPro();
        }

        private void metGenerarClave()//metodo que se utiliza para la generacion de las claves primarias
        {
            Aplicacion.clsControles.clsControles auxGen = new Aplicacion.clsControles.clsControles();
            txtCodigoPr.Text = auxGen.GeneracionClaves("K", auxCom.metCofigurarIngresoProveedores(varConexion,this.coleccionDeDatos1));//Llamado al metodo que genera una clave
            //Metodo que se encuentra en las clases de acceso         
        }
        //Aceptar los datos de registros si todos los ingresos son correctos se activara los botones de ingreso
        private void metAceptarPr()
        {
            if (txtNombrePr.Text.Length > 4 && txtDireccionPr.Text.Length > 4 && txtResponsablePr.Text.Length > 5 && txtCedulaPr.Text.Length > 5 && txtTelefonoPr.Text.Length > 5 && txtObserResPr.Text.Length > 5 && cmbCiudadPr.Text.Length > 4 && cmbPaisPr.Text.Length > 5)
                btnGuardarPr.Enabled = true;
            else
                btnGuardarPr.Enabled = false;        
        }
        //Metodo de clear y de nuevo ingreso
        private void btnNuevoPr_Click(object sender, EventArgs e)
        {
            metGenerarClave();
            metLimpiar();
            btnNuevoPr.Enabled = false;
            this.coleccionDeDatos1.vs_getCiudadesProveedor.Clear();
            this.coleccionDeDatos1.vs_getPaisProveedor.Clear();
            metActualizarDatosPro();
            grpProveedorPR.Enabled = true;
        }
        //Llamado al control de ingresos
        private void textNombrePr_KeyUp(object sender, KeyEventArgs e)
        {
            metAceptarPr();
        }

        private void textNombrePr_KeyPress(object sender, KeyPressEventArgs e)
        {
            Aplicacion.clsControles.clsControles auxFrm = new Aplicacion.clsControles.clsControles();
            varBandera = auxFrm.metSoloLetras(e, varBandera);//controla que solo ingrese letras
            varBandera = auxFrm.metPrecionarEspacio(e, varBandera);//Controla el ingreso de espacios
            //Estos metodo se encuentran en la clase de acceso locales
        }
        //Limpiar los datos para un nuevo ingreso
        private void metLimpiar()
        { 
        txtNombrePr.Clear();
        txtDireccionPr.Clear();
        txtResponsablePr.Clear();
        txtCedulaPr.Clear();
        txtTelefonoPr.Clear();
        txtObserResPr.Clear();
        txtNombrePr.Focus();
        }

        private void textNombrePr_KeyDown(object sender, KeyEventArgs e)
        {
            metSalto(txtResponsablePr, e);//Llamado al metodo de ejecucion de salto de textbox

        }

        private void textResponsablePr_KeyDown(object sender, KeyEventArgs e)
        {
            metSalto(txtObserResPr, e);//Llamado al metodo de ejecucion de salto de textbox
        }

        private void textObserRes_KeyDown(object sender, KeyEventArgs e)
        {
            metSalto(txtCedulaPr, e);//Llamado al metodo de ejecucion de salto de textbox
        }

        private void textCedulaPr_KeyDown(object sender, KeyEventArgs e)
        {
            metSalto(txtTelefonoPr, e);//Llamado al metodo de ejecucion de salto de textbox
        }

        private void textTelefonoPr_KeyDown(object sender, KeyEventArgs e)
        {
            metSalto(txtDireccionPr, e);//Llamado al metodo de ejecucion de salto de textbox
        }
        //Con un enter se mueve de un espacio a otro
        private void textDireccionPr_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
                cmbCiudadPr.Focus();
        }

        private void metSalto(TextBox Mas,KeyEventArgs e)
        { //Metodo para salto de texbox cuando se preciona la tecla enter
          if (e.KeyCode == Keys.Enter)
              Mas.Focus();
        }

        private void comCiudadPr_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                cmbPaisPr.Focus();
                btnGuardarPr.PerformClick();
            }
        }

        private void textCedulaPr_KeyPress(object sender, KeyPressEventArgs e)
        {
            Aplicacion.clsControles.clsControles auxFrm = new Aplicacion.clsControles.clsControles();
            varBandera = auxFrm.metSoloNumeros(e, varBandera);//Controla que solo ingrese numeros
        }

        private void textObserRes_KeyPress(object sender, KeyPressEventArgs e)
        {
            Aplicacion.clsControles.clsControles auxFrm = new Aplicacion.clsControles.clsControles();
            varBandera = auxFrm.metControlarEspacios(e, varBandera);//Controla que el ingreso sea de numeros o de letras
            varBandera = auxFrm.metPrecionarEspacio(e, varBandera);//Control de espacios para que ingresen mas de un espacio
        }

     

        private void textResponsablePr_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            txtResponsablePr.Text = txtNombrePr.Text;//Cuando hace el cliente doble clic en el texbox es porque 
            //no existe una empresa si no un encargado que es el mismo nombre de la empresa
        }

        private void textObserRes_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            txtObserResPr.Text = "No existen observaciones para este proveedor";
            //Con un doble click aqui se registra esta frase
        }
        //Llamdo al modificador de ingresos
        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            Aplicacion.Formularios.frmModificarProveedor auxFrm = new frmModificarProveedor(varConexion);
            auxFrm.ShowDialog();
        }

    }
}
